package com.shopping.system.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.shopping.common.entity.Good;
import com.shopping.common.entity.GoodSku;
import com.shopping.common.entity.vo.GoodSecondSkillVo;
import com.shopping.common.entity.vo.UserVo;
import com.shopping.common.utils.JwtUtils;
import com.shopping.common.utils.StringUtils;
import com.shopping.system.feign.EsFeign;
import com.shopping.system.service.SystemService;
import org.joda.time.field.SkipUndoDateTimeField;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 公共功能处理类
 */
@Service
public class InformationImpl {

    @Autowired
    SystemService systemService;

    @Autowired
    EsFeign esFeign;

//    @Autowired
//    RedisTemplate<String,Object> redisTemplate;

    /**
     * 查找当前登录人
     * @param redisTemplate
     * @param request
     * @return
     */
    public static UserVo findUserLogin(RedisTemplate<String,Object> redisTemplate, HttpServletRequest request){
        //获取token
        String token = request.getHeader(JwtUtils.TOKEN);

        // token 为空 未登录
        if(StringUtils.isEmpty(token)){
            UserVo userVo = new UserVo();
            userVo.setLoginFlag(1);
            return userVo;
        }
        // 解析token
        String userKey = JwtUtils.getUserKey(token);
        //获取数据
        String s = String.valueOf(redisTemplate.opsForValue().get(JwtUtils.LOGIN_TOKEN_KEY + userKey));
        // 反序列化
        UserVo userLoginVo = JSONObject.parseObject(s, UserVo.class);
        userLoginVo.setLoginFlag(2);

        return userLoginVo;
    }

    /**
     * 服务启动 全量添加
     */
    @PostConstruct
    public void addAllSame(){
        // 查找可同步的商品
        List<Good> list =systemService.findVoliadAddEsGood();
        // 查询到数据
        if(list.size()>0){
            // 同步
            int tt = esFeign.addGoodToEs(list);
            //同步成功
            if(tt> 0) {
                // 修改同步商品的信息
                systemService.updateAddedGood(list);
            }
        }

    }

//    /**
//     * 商品信息存入redis
//     */
//    @PostConstruct
//    public void findGoodToRedis(){
//        String allGood = (String) (redisTemplate.opsForValue().get("allGood"));
//        // redis 缓存为空
//        if(StringUtils.isEmpty(allGood)) {
//            List<Good> list = systemService.findGood();
//            redisTemplate.opsForValue().set("allGood",JSONObject.toJSONString(list));
//        }
//    }
//
//    /**
//     * 商品sku信息存入redis
//     */
//    @PostConstruct
//    public void findGoodSkuToRedis(){
//        String allGoodSku = (String) (redisTemplate.opsForValue().get("allGoodSku"));
//        // 缓存为空
//        if(StringUtils.isEmpty(allGoodSku)) {
//            List<GoodSku> list = systemService.findGoodSku();
//            redisTemplate.opsForValue().set("allGoodSku",JSONObject.toJSONString(list));
//        }
//    }

}
